package pp.infrastructure.exception;


import lombok.Getter;

@Getter
public enum PPExceptionInfo {

    // 通用部分
    GENERIC_SYSTEM_FAIL("系统异常"),
    GENERIC_SYSTEM_BUSY("系统繁忙，请稍后再试"),
    GENERIC_SYSTEM_PARAM_CANNOT_NULL("输入参数为空，执行失败"),
    GENERIC_INPUT_PARAM_INVALID("输入参数无效"),
    GENERIC_SYSTEM_INNER_DATA_NULL("系统内部参数缺失"),
    GENERIC_LOADED_AGGREGATION_CANNOT_DIRECTLY_MODIFY("已加载的领域对象不允许重复覆盖"),
    GENERIC_DOMAIN_INTEGRITY_CHECK_FAIL("数据完整性检查失败"),
    GENERIC_SYSTEM_INNER_PARAM_INVALID("系统内部参数无效"),
    GENERIC_SYSTEM_MYSQL_RECORD_NOT_EXIST("数据库记录不存在"),

    // 鉴权部分
    AUTHENTICATE_NO_LOGIN("用户未登录"),
    AUTHENTICATE_LOGIN_EXPIRED("登录已失效，请重新登录"),
    AUTHENTICATE_NO_PERMISSION("您没有该权限"),
    AUTHENTICATE_USER_DISABLED("用户已被禁用"),

    // 速度检测工具部分
    SPEEDMONITOR_ANNOTATION_FAIL("速度检测异常"),

    //字符串工具部分
    STRING_ERROR_LENGTH("错误的字符串长度，请检查是否在有效范围内"),
    STRING_ERROR_ALIVETIME("错误的存活时长，请检查是否在有效范围内"),
    STRING_ERROR_DATA("错误的数据，请检查"),

    // 分布式锁部分
    LOCK_LEASETIME_IS_NOT_ALLOWED("错误的取锁时长，请检查是否在有效范围内"),
    LOCK_WAITTIME_IS_NOT_ALLOWED("错误的等待时长，请检查是否在有效范围内"),
    LOCK_RETRYATTEMPTS_IS_NOT_ALLOWED("错误的重试取锁周期，请检查是否在有效范围内"),
    LOCK_FAILED_TO_ACQUIRE_LOCK("获取锁失败，锁被占用中"),
    LOCK_IS_NOT_EXIST("解锁失败，锁不存在"),

    // 用户账号管理
    UNKOWN_USER_TYPE("未知的用户类型"),
    SUB_ACCOUNT_NO_EXIST("子账号不存在"),
    ERROR_HASH_PWD("错误的哈希密码"),
    ONLY_MAIN_ACCOUNT_CAN_CREATE_SUB_ACCOUNT("只有主账号才能创建子账号"),
    WRONG_USER_ID("错误的用户ID"),
    WRONG_SUB_ACCOUNT_INFO("子账号信息有误"),
    WRONG_COMPANY_NAME("错误的公司名称"),
    WRONG_IMG("错误的图片内容"),
    TOO_LONG_DESCRIPTION("描述内容过长"),
    NO_SUCH_USERTYPE("该角色不存在"),
    WRONG_ORG_ID("错误的公司ID号"),
    WRONG_USER_NAME("错误的账号名称"),

    PWD_NOT_MEET_REQUIREMENT("密码不符合要求"),
    WRONG_TELEPHONE("错误的电话号码"),
    WRONG_STATE("输入状态错误"),
    WRONG_ACCOUNT("账号不合规"),
    ACCOUNT_NOT_EXIST("登陆错误，用户不存在"),
    INCORRECT_PASSWORD_INPUT("登录失败，密码输入不正确"),
    FAILED_STORE_TOKEN_IN_CACHE("token存入缓存失败"),

    //TDengine部分
    FAILED_TO_INIT_TDENGINE_DATA_SOURCE("初始化TD数据源失败"),
    TDENGINE_DATA_SOURCE_INVALID("TD数据源失效");


    private final String message;

    PPExceptionInfo(String message) {
        this.message = message;
    }

}
